package com.jiukuaidao.zhulin.util;

import com.baidu.android.pushservice.PushConstants;
import com.baidu.android.pushservice.PushManager;
import com.jiukuaidao.library.Config;
import com.jiukuaidao.library.util.Utils;
import com.jiukuaidao.zhulin.entity.ApiGeoCoderInfo;
import com.jiukuaidao.zhulin.expand.baidu.ICallBack;
import com.jiukuaidao.zhulin.expand.baidu.location.Location;
import com.jiukuaidao.zhulin.expand.baidu.webapi.Geocoding;

import java.util.List;

/**
 * Author : BinarySatan
 * Date : 2016/5/24
 * Description :
 */
public class BDUtils {

    public static void start() {
        Location.getInstance().start();
    }


    public static void stop() {
        Location.getInstance().stop();
    }


    /**
     * 根据经纬度反解析为 详细的文字地址
     *
     * @param longitude 经度
     * @param latitude  纬度
     * @param callBack
     */
    public static void geocoding(double longitude, double latitude, ICallBack<ApiGeoCoderInfo> callBack) {
        Geocoding.geocoding(longitude, latitude, callBack);
    }




    /***********************************************************************************************
     * 推送相关    推送相关    推送相关      推送相关      推送相关     推送相关  推送相关   推送相关  *
     ***********************************************************************************************/

    public static void startPush() {
        //参数2 :绑定认证方式（无账号认证方式用PushConstants.LOGIN_TYPE_API_KEY，百度Auth2.0认证方式用PushConstants.LOGIN_TYPE_ACCESS_TOKEN）
        //参数3 : 与参数2对应，分别是应用的API Key，或者百度Auth2.0 Access
        PushManager.startWork(Utils.getContext(), PushConstants.LOGIN_TYPE_API_KEY, Config.KEY.BAIDU_PUSH_KEY);
    }

    /**
     * 通过自定义的Receiver类里onUnbind方法返回结果
     */
    public static void stopPush() {
        PushManager.stopWork(Utils.getContext());
    }

    /**
     * 恢复本应用Push服务，并且再次完成bind工作。
     */
    public static void resumeWork() {
        PushManager.resumeWork(Utils.getContext());
    }

    /**
     * 是否开启推送 true开启
     */
    public static boolean isPushEnabled() {
        return PushManager.isPushEnabled(Utils.getContext());
    }

    /**
     * 免打扰时间,通知到达时去除通知提示音，震动，以及提示灯闪烁
     * <p>
     * 注意：如果开始时间小于结束时间，免打扰时段为当天的起始时间到结束时间
     * 如果开始时间大于结束时间，免打扰时段为第一天起始时间到第二天结束时间；如果开始时间和结束时间的设置均为00:00时,取消免打扰时段功能。
     *
     * @param startHour
     * @param startMinute
     * @param endHour
     * @param endMinute
     */
    public static void setNoDisturbMode(int startHour, int startMinute, int endHour, int endMinute) {
        PushManager.setNoDisturbMode(Utils.getContext(), startHour, startMinute, endHour, endMinute);
    }

    /**
     *
     * 注意：tag设置的前提是已绑定的端，也就是应用有运行过startWork或bind，且在onBind回调中返回成功。
     *
     * 通过自定义的Receiver类里onSetTags方法返回结果
     * @param tags
     */
    public static void setTags(List tags) {
        PushManager.setTags(Utils.getContext(), tags);
    }

    public static void delTags(List tags){
        PushManager.delTags(Utils.getContext(),tags);
    }

}
